﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;

namespace SIGEB.Prototipo.control
{
    public class Validacion
    {

        public static bool LongitudCadenaValida(string cadena, bool requerido, int maxCaracteres)//verifica que el tamaño sea el correcto, tambien que el campo no sea vacio si asi se de desea
        {
            if (cadena == null)
            {
                cadena = "";
            }
            int min = 0;
            if (requerido)
                min = 1;
            if (cadena.Trim() == "" && min > 0)
                return false;

            if (cadena.Length > maxCaracteres && maxCaracteres != 0)
                return false;

            if (cadena.Length < min)
                return false;

            return true;
        }

        public static bool NumeroValido(string numero, bool camporequerido, bool ConDecimales)
        {
            if (camporequerido)
            {
                if (numero.Trim() == "")
                    return false;
            }
            double pruebadou = -1;
            int pruebaint = -1;
            try
            {
                if (ConDecimales)
                    pruebadou = double.Parse(numero);
                else
                    pruebaint = int.Parse(numero);
            }
            catch (FormatException)
            {
                return false;
            }
            if (pruebadou < 0 && ConDecimales)
                return false;
            if (pruebaint < 0 && !ConDecimales)
                return false;
            return true;
        }

        public static bool validaCedula(string cedula, bool requerido)
        {
            return LongitudCadenaValida(cedula, requerido, 0) && Regex.IsMatch(cedula, patronId);
        }

        public static bool validaEmail(string email, bool requerido)
        {
            return LongitudCadenaValida(email, requerido, 0) && Regex.IsMatch(email, patronEmail);
        }

        public static bool validaFecha(string fecha)
        {
            try
            {
                DateTime.Parse(fecha);
                return true;
            }
            catch
            {
                return false;
            }
        }

        public static bool mayor(double mayor, double menor, bool igual)
        {
            if (igual)
            {
                if (mayor == menor)
                {
                    return true;
                }
            }
            if (mayor > menor)
            {
                return true;
            }
            return false;
        }

        public static bool mayor(DateTime mayor, DateTime menor, bool igual)
        {
            if (igual)
            {
                if (mayor.ToShortDateString() == menor.ToShortDateString())
                {
                    return true;
                }
            }
            if (mayor > menor)
            {
                return true;
            }
            return false;
        }

        public const string patronId = @"^\d{1}-\d{4}-\d{4}$";

        public const string patronEmail =
            @"^(([\w-]+\.)+[\w-]+|([a-zA-Z]{1}|[\w-]{2,}))@" +
            @"((([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\." +
            @"([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])\.([0-1]?[0-9]{1,2}|25[0-5]|2[0-4][0-9])){1}|" +
            @"([a-zA-Z]+[\w-]+\.)+[a-zA-Z]{2,4})$";
    }

}
